package com.loveprogrammer.factory.template;

import java.io.Serializable;
import java.util.List;

/**
 * @version 1.0.0
 * @description: 地图模版
 * @author: eric
 * @date: 2024-02-18 11:29
 **/
public class MapTemplate implements Serializable{

    private String id;

    private String name;

    private int level;

    private String desc;

    private List<FloorMap> floors;

    private List<MonsterData> monsters;

    private String teamSize;

    private List<String> npcIds;

    private List<BossData> bossList;

    private Integer resistanceReduce;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public List<MonsterData> getMonsters() {
        return monsters;
    }

    public void setMonsters(List<MonsterData> monsters) {
        this.monsters = monsters;
    }

    @Override
    public String toString() {
        return "MapTemplate{" +
                "id='" + id + '\'' +
                ", 名称='" + name + '\'' +
                ", 级别='" + level + '\'' +
                ", 说明='" + desc + '\'' +
                '}';
    }

    public static class FloorMap implements Serializable {

        private String id;

        private String name;

        private String desc;

        private List<MonsterData> monsters;

        private String teamSize;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getDesc() {
            return desc;
        }

        public void setDesc(String desc) {
            this.desc = desc;
        }

        public List<MonsterData> getMonsters() {
            return monsters;
        }

        public void setMonsters(List<MonsterData> monsters) {
            this.monsters = monsters;
        }

        public String getTeamSize() {
            return teamSize;
        }

        public void setTeamSize(String teamSize) {
            this.teamSize = teamSize;
        }
    }

    public static class MonsterData implements Serializable {
        // 出现的概率
        private int percents;

        // 级别最高
        private int levelMin;

        // 级别最低
        private int levelMax;

        //
        private int monsterId;

        // 掉落的列表
        private List<Drop> dropList;

        public int getPercents() {
            return percents;
        }

        public void setPercents(int percents) {
            this.percents = percents;
        }

        public int getLevelMin() {
            return levelMin;
        }

        public void setLevelMin(int levelMin) {
            this.levelMin = levelMin;
        }

        public int getLevelMax() {
            return levelMax;
        }

        public void setLevelMax(int levelMax) {
            this.levelMax = levelMax;
        }

        public int getMonsterId() {
            return monsterId;
        }

        public void setMonsterId(int monsterId) {
            this.monsterId = monsterId;
        }

        public List<Drop> getDropList() {
            return dropList;
        }

        public void setDropList(List<Drop> dropList) {
            this.dropList = dropList;
        }
    }


    public static class BossData implements Serializable {
        // 级别
        private int level;

        //
        private int monsterId;

        private List<String> teamMembers;

        // 掉落的列表
        private List<Drop> dropList;

        public int getLevel() {
            return level;
        }

        public void setLevel(int level) {
            this.level = level;
        }

        public int getMonsterId() {
            return monsterId;
        }

        public void setMonsterId(int monsterId) {
            this.monsterId = monsterId;
        }

        public List<String> getTeamMembers() {
            return teamMembers;
        }

        public void setTeamMembers(List<String> teamMembers) {
            this.teamMembers = teamMembers;
        }

        public List<Drop> getDropList() {
            return dropList;
        }

        public void setDropList(List<Drop> dropList) {
            this.dropList = dropList;
        }
    }


    public static class Drop implements Serializable {
        // 出现的概率
        private int percents;

        //
        private int goodsId;

        private String goodsType;

        public int getPercents() {
            return percents;
        }

        public void setPercents(int percents) {
            this.percents = percents;
        }

        public int getGoodsId() {
            return goodsId;
        }

        public void setGoodsId(int goodsId) {
            this.goodsId = goodsId;
        }

        public String getGoodsType() {
            return goodsType;
        }

        public void setGoodsType(String goodsType) {
            this.goodsType = goodsType;
        }
    }

    public String getTeamSize() {
        return teamSize;
    }

    public void setTeamSize(String teamSize) {
        this.teamSize = teamSize;
    }

    public List<String> getNpcIds() {
        return npcIds;
    }

    public void setNpcIds(List<String> npcIds) {
        this.npcIds = npcIds;
    }

    public List<BossData> getBossList() {
        return bossList;
    }

    public void setBossList(List<BossData> bossList) {
        this.bossList = bossList;
    }

    public List<FloorMap> getFloors() {
        return floors;
    }

    public void setFloors(List<FloorMap> floors) {
        this.floors = floors;
    }

    public Integer getResistanceReduce() {
        return resistanceReduce;
    }

    public void setResistanceReduce(Integer resistanceReduce) {
        this.resistanceReduce = resistanceReduce;
    }
}
